/**
 * src/types/identity.ts
 * ------------------------------------
 * 身份与亲密度系统类型定义
 * 1. 身份类型枚举：IdentityType（家人/朋友）
 * 2. 身份详细分类：FamilyIdentity、FriendIdentity
 * 3. 亲密度等级：IntimacyLevel（陌生人到家人）
 * 4. 特殊内容：FamilySpecialDish、FriendStickerStory
 * 5. 用户身份扩展：UserIdentity 接口
 * 支持小魏的家人与朋友两种身份体系，每种身份解锁不同内容
 * 创建日期：2025-08-06
 */

// 身份类型枚举 - 区分家人和好友两种主要身份类型
export enum IdentityType {
  FAMILY = 'family',    // 小魏的家人
  FRIEND = 'friend'     // 小魏的好友
}

// 身份详细分类 - 家人身份的具体分类
export enum FamilyIdentity {
  MOM = 'mom',           // 妈妈
  DAD = 'dad',           // 爸爸
  SISTER = 'sister',     // 姐姐
  BROTHER = 'brother',   // 弟弟
  GRANDPA = 'grandpa',   // 爷爷
  GRANDMA = 'grandma',   // 奶奶
  OTHER_FAMILY = 'other_family' // 其他家人
}

// 身份详细分类 - 好友身份的具体分类
export enum FriendIdentity {
  BEST_FRIEND = 'best_friend', // 闺蜜
  COLLEAGUE = 'colleague',     // 同事
  CLASSMATE = 'classmate',     // 同学
  NEIGHBOR = 'neighbor',       // 邻居
  OTHER_FRIEND = 'other_friend' // 其他朋友
}

// 亲密度等级 - 定义用户与小魏的亲密度等级
export enum IntimacyLevel {
  STRANGER = 0,      // 陌生人 (0-10)
  ACQUAINTANCE = 1,  // 熟人 (11-30)
  FRIEND = 2,        // 朋友 (31-60)
  CLOSE = 3,         // 亲密 (61-90)
  FAMILY = 4         // 家人 (91-100)
}

// 亲密度记录类型 - 定义增加亲密度的各种行为
export enum IntimacyRecordType {
  ORDER = 'order',           // 点餐
  RATING = 'rating',         // 评价
  SHARE = 'share',           // 分享
  BIRTHDAY = 'birthday',     // 生日
  HOLIDAY = 'holiday',       // 节日
  DAILY_LOGIN = 'daily_login' // 每日登录
}

/**
 * 身份信息接口 - 定义每个身份的基本信息
 */
export interface IdentityInfo {
  type: IdentityType;        // 身份类型（家人或好友）
  subType: string;           // 身份子类型（妈妈、爸爸、闺蜜等）
  name: string;              // 显示名称
  icon: string;              // 图标（emoji）
  description: string;       // 描述信息
  initialIntimacy: number;   // 初始亲密度
}

/**
 * 亲密度记录接口 - 记录用户每次增加亲密度的行为
 */
export interface IntimacyRecord {
  id: string;                // 记录唯一ID
  userId: string;            // 用户ID
  type: IntimacyRecordType;  // 记录类型
  points: number;            // 增加的亲密度点数
  description: string;       // 描述信息
  createdAt: Date;           // 创建时间
}

/**
 * 特殊菜品接口 - 家人身份解锁的特殊菜品
 */
export interface FamilySpecialDish {
  id: string;                // 菜品唯一ID
  dishId: string;            // 菜品ID
  dishName: string;          // 菜品名称
  requiredIdentity: string;  // 需要的身份类型
  requiredIntimacy: number;  // 需要的亲密度
  unlockMessage: string;     // 解锁时的消息
  specialStory: string;      // 特殊故事描述
  icon: string;              // 图标
  image?: string;            // 图片路径（可选）
}

/**
 * 贴图故事接口 - 好友身份解锁的贴图故事
 */
export interface FriendStickerStory {
  id: string;                // 故事唯一ID
  stickerId: string;         // 贴图ID
  stickerName: string;       // 贴图名称
  requiredIdentity: string;  // 需要的身份类型
  requiredIntimacy: number;  // 需要的亲密度
  storyContent: string;      // 故事内容
  unlockCondition: string;   // 解锁条件描述
  icon: string;              // 图标
  previewImage?: string;     // 预览图片（可选）
}

/**
 * 解锁内容接口 - 记录用户已解锁的内容
 */
export interface UnlockedContent {
  id: string;                // 记录唯一ID
  userId: string;            // 用户ID
  contentId: string;         // 内容ID
  contentType: 'special_dish' | 'sticker_story'; // 内容类型
  unlockedAt: Date;          // 解锁时间
  isUsed: boolean;           // 是否已使用
}

/**
 * 用户身份扩展接口 - 扩展用户信息，添加身份相关字段
 */
export interface UserIdentity {
  identityType: IdentityType;    // 身份类型
  identitySubType: string;       // 身份子类型
  intimacy: number;              // 当前亲密度
  intimacyLevel: IntimacyLevel;  // 亲密度等级
  unlockedSpecials: string[];    // 已解锁的特殊内容ID列表
  lastInteractionDate: Date;     // 最后互动时间
  identityName: string;          // 身份显示名称
} 